package com.joysuch.wwyt.baidu.req;

import com.baidu.aip.face.AipFace;
import com.baidu.aip.face.MatchRequest;
import com.joysuch.wwyt.baidu.util.DzPrtqUtils;
import org.json.JSONObject;

import java.io.FileInputStream;
import java.io.IOException;
import java.util.ArrayList;
import java.util.HashMap;

public class BaiduFace {

    public JSONObject compare(AipFace client, String image1Base64, String image2Base64) {
        // image1/image2也可以为url或facetoken, 相应的imageType参数需要与之对应。
        MatchRequest req1 = new MatchRequest(image1Base64, "BASE64");
        MatchRequest req2 = new MatchRequest(image2Base64, "BASE64");
        ArrayList<MatchRequest> requests = new ArrayList<MatchRequest>();
        requests.add(req1);
        requests.add(req2);

        JSONObject res = client.match(requests);
        System.out.println(res.toString(2));
        return res;
    }

    /**
     * 添加用户组
     *
     * @param groupId
     * @return
     */
    public JSONObject groupAdd(AipFace client, String groupId) {
        JSONObject jsonObject = client.groupAdd(groupId, null);
        return jsonObject;
    }

    /**
     * 查询用户组
     *
     * @param client
     * @return
     */
    public JSONObject getGroupList(AipFace client) {
        JSONObject jsonObject = client.getGroupList(null);
        return jsonObject;
    }

    /**
     * 人脸注册
     *
     * @param client
     * @param image
     * @param imageType 图片类型
     *                  BASE64:图片的base64值，base64编码后的图片数据，编码后的图片大小不超过2M；
     *                  URL:图片的 URL地址( 可能由于网络等原因导致下载图片时间过长)；
     *                  FACE_TOKEN：人脸图片的唯一标识，调用人脸检测接口时，会为每个人脸图片赋予一个唯一的FACE_TOKEN，同一张图片多次检测得到的FACE_TOKEN是同一个。
     * @param groupId   用户组id
     * @param userId
     * @param options
     * @return
     */
    public JSONObject addUser(AipFace client, String image, String imageType, String groupId, String userId, HashMap<String, String> options) {
        return client.addUser(image, imageType, groupId, userId, options);
    }

    /**
     * 人脸更新
     *
     * @param client
     * @param image
     * @param imageType 图片类型
     *                  BASE64:图片的base64值，base64编码后的图片数据，编码后的图片大小不超过2M；
     *                  URL:图片的 URL地址( 可能由于网络等原因导致下载图片时间过长)；
     *                  FACE_TOKEN：人脸图片的唯一标识，调用人脸检测接口时，会为每个人脸图片赋予一个唯一的FACE_TOKEN，同一张图片多次检测得到的FACE_TOKEN是同一个。
     * @param groupId   用户组id
     * @param userId
     * @param options
     * @return
     */
    public JSONObject updateUser(AipFace client, String image, String imageType, String groupId, String userId, HashMap<String, String> options) {
        return client.updateUser(image, imageType, groupId, userId, options);
    }

    /**
     * 人脸搜索
     *
     * @param client
     * @param image
     * @param imageType
     * @param groupIdList
     * @param options
     * @return
     */
    public JSONObject search(AipFace client, String image, String imageType, String groupIdList, HashMap<String, Object> options) {
        return client.search(image, imageType, groupIdList, options);
    }


    /**
     * 删除人脸
     *
     * @param client
     * @param userId
     * @param groupId
     * @param faceToken
     * @param options
     * @return
     */
    public JSONObject faceDelete(AipFace client, String userId, String groupId, String faceToken, HashMap<String, String> options) {
        return client.faceDelete(userId, groupId, faceToken, options);
    }


    public static void main(String[] args) throws IOException {

        String APP_ID = "27022474";
        String API_KEY ="nSLfyIcgUsH7khj4VFHlDzqb";
        String SECRET_KEY = "eU1EbSEGu41LvFaXxLD92mMpvYhn9whO";
        AipFace  client = new AipFace(APP_ID, API_KEY, SECRET_KEY);

        // 可选：设置网络连接参数
        client.setConnectionTimeoutInMillis(2000);
        client.setSocketTimeoutInMillis(60000);
//        String image1 = DzPrtqUtils.readFileToBase64(new FileInputStream("D:\\xsx\\img\\dlrb3.png"));
//        String image2 = DzPrtqUtils.readFileToBase64(new FileInputStream("D:\\xsx\\img\\dlrb4.jpg"));
//        JSONObject compare = new BaiduFace().compare(client, image1, image2);
//        System.out.println("识别返回-->"+compare.toString());
//        System.out.println(System.currentTimeMillis());


//        String imageBase64 = DzPrtqUtils.readFileToBase64(new FileInputStream("D:\\xsx\\img\\dlrb3.jpg"));
        String groupId="202272";
//        JSONObject jsonObject = client.addUser(imageBase64, "BASE64", groupId, "9001", null);
//        System.out.println(jsonObject);
//        JSONObject groupUsers = client.getGroupUsers(groupId, null);
//        System.out.println(groupUsers);
        JSONObject jsonObject = client.deleteUser(groupId, "9796", null);
        System.out.println(jsonObject);
        JSONObject groupUsers = client.getGroupUsers(groupId, null);
        System.out.println(groupUsers);
    }


}
